package com.yxw.contentproviderdemo01;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

public class MyContentProvider extends ContentProvider {
    /*
    比如你实现了增和删，那么你这个contentProvider写完了之后，如果别人要去访问你这个数据库的话
    他将只能实现这个增和删的功能，那么这个第三方程序他的这个能力全部取决于你这个ContentProvider的功能
    如果你这个contentProvider实现的功能非常简单或者非常局限性，那么其他程序在解析的时候会非常受制于你的
    限制
     */


    /**
     * 在contentProvider创建后被调用
     * @return
     */
    @Override
    public boolean onCreate() {
        return false;
    }

    /**
     * 根据Uri查询出selection指定的条件所匹配的全部记录，并且可以指定查询哪些列，以什么方式（order）排序
     * @param uri
     * @param projection
     * @param selection
     * @param selectionArgs
     * @param sortOrder
     * @return
     */
    @Nullable
    @Override
    public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
        return null;
    }

    /**
     * 返回当前uri的MIMIE类型，如果该URI对应的数据可能包括多条记录
     * 那么MIME类型字符串就是以vnd.android.dir/开头
     * 如果该URI对应的数据只有一条记录，该MIME类型字符串 就是以vnd.android.cursor.item/开头
     * @param uri
     * @return
     */
    @Nullable
    @Override
    public String getType(@NonNull Uri uri) {
        return null;
    }

    /**
     * 根据Uri插入values对应的数据
     * @param uri
     * @param values
     * @return
     */
    @Nullable
    @Override
    public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
        return null;
    }

    /**
     * 根据Uri删除selection指定的条件所匹配的全部记录
     * @param uri
     * @param selection
     * @param selectionArgs
     * @return
     */
    @Override
    public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {
        return 0;
    }

    /**
     * 根据Uri修改selection指定的条件所匹配的全部记录
     * @param uri
     * @param values
     * @param selection
     * @param selectionArgs
     * @return
     */
    @Override
    public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {
        return 0;
    }
}
